const express = require("express");

// 2、创建路由对象
const router = express.Router()
// 导入数据库
const db = require("../db/db")

// 导入token
const jwt = require('jsonwebtoken')
// 导入token的加密
const config = require('../config')

// 注册模块
router.post("/zc", (req,res) => {
    // res.send("注册模块")
    // 1、获取注册传过来的值
    const data = req.body
    // 2、判断传过来的账号密码是否为空
    if (!data.name || !data.password) return res.send({status:'404',mes:"账号密码不能为空"});
    // 3、判断密码长度
    if (data.password.length <= '6') return res.send({status:'404',mes:"密码最少为六位数"})
    // 4、查看用户名是否已经被注册
    const sql = 'select * from user where name=?'
    // 5、发送sql语句
    db.query(sql, data.name, (err, results) => {
        if (err) return res.send(err.message);
        // 如果返回的长度大于0就代表有数据不能注册
        if (results.length > 0) return res.send({status:'404',mes:"用户名已被注册，请重新输入"});
        // 否则就可以注册 准备注册的语句
        const sql2 = 'insert into user set?'
        // 发送语句
        db.query(sql2, { name: data.name, password: data.password }, (err, results) => {
            if (err) return res.send(err.message);
            res.send({status:'200',mes:"注册成功"})
        })

    })
  
})

// 登录模块
router.get("/login", (req, res) => {
    // res.send("登录模块")
    // 获取用户输入的账号密码
    const body = req.query
    // 进行判断是否为空
    if (!body.name || !body.password) return res.send({ status: '404', mes: "账号密码不能为空" })
    // 判断密码
    if (body.password.length <= '6') return res.send({status:'404',mes:"密码最少为六位数"})
    // 查询数据库
    const sql = 'select * from user where name=?'
    // 发送
    db.query(sql, body.name, (err, results) => {
        if (err) return res.send(err.message);

        // 查询有无此人
        if (results.length !== 1) return res.send({ status: '404', mes: '登录失败' })

// res.send(results[0].password)
        // 判断results的账号和密码是否为一样 一样则登录成功并生成token
        if(body.password !==results[0].password ) return res.send({ status: '404', mes: '账号或密码错误' })
        
        // 生成token的字符串
        // 01 把账号密码取出来 把密码变成空字符串
        const user = {...results[0] ,password:''}
        // 02新建一个 config.js来共享加密token和解
        // 03进行生成token 使用 jwt.sign('信息'，'加密的字符串'，{expiresIn:10h})
        const token = jwt.sign(user,config.jwtSecretKey,{expiresIn:'10h'})
        // 为了方便客户端使用 Token，在服务器端直接拼接上 Bearer 的前缀
      
        res.send({ status: '200', mes: '登录成功',token:'Bearer '+token })

    })
})

// 3、导出router模块
module.exports = router